from django.core.management.base import BaseCommand, CommandError
from oplata.models import *
import openpyxl


def replace_None_with_None(input):
    """ Заменяет текст 'None' настоящим None"""
    if input is None or input == 'None':
        return None
    return input


def replace_None_with_Blank(input):
    """ Заменяет текст 'None' пустой строкой"""
    if input is None or input == 'None':
        return ''
    return input


class Command(BaseCommand):
    help = "Загружает возвраты из exel файла, формат id счета, есть ли бан (текст бан), комментарий"

    def add_arguments(self, parser):
        parser.add_argument("filename")

    def handle(self, *args, **options):
        workbook = openpyxl.load_workbook(options['filename'], read_only=True)
        worksheet = workbook.active
        rows = worksheet.iter_rows()
        headers = [str(cell.value) for cell in next(rows)]
        print(headers)
        row_n=2
        # большой цикл по объектам
        for row in rows:
            order = None
            v = [str(cell.value) for cell in row]
            try:
                order = Order.objects.get(pk=v[0])
            except Order.DoesNotExist:
                print(f"Не найден счет: {v[0]} в строке {row_n}")
                break
            order.status = 5  # возврат
            order.profit = 0.0
            order.seller_comment = replace_None_with_Blank(v[2])
            order.save(update_fields=['status', 'profit', 'seller_comment'])

            if v[1] == 'бан':
                order.client.ban = True
                order.client.ban_description = replace_None_with_Blank(v[2])
                order.client.save(update_fields=['ban', 'ban_description'])

            print(row_n, v[0])
            row_n=row_n+1